package fr.blogger.ejb.facade;

import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Named;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import fr.blogger.ejb.model.Blog;
import fr.blogger.ejb.model.Blog_;
import fr.blogger.ejb.model.Utilisateur;

@Named
@Stateless
public class BlogFacade extends AbstractFacade<Blog> {

	public List<Blog> findByBlogSearch(String nom) {
		CriteriaQuery query = initQuery();
		Root blog = query.from(entityClass);
		Predicate cond1 = builder().like(blog.get(Blog_.nom), "%" + nom + "%");
		query.where(cond1);
		return em.createQuery(query).getResultList();
	}

	public void abonner(Utilisateur utilisateur, Blog blog) {
		utilisateur.getListeBlogAbonne().add(blog);
		blog.getListeUtilisateurAbonne().add(utilisateur);
		update(blog);
	}

	public void desabonner(Utilisateur utilisateur, Blog blog) {
		utilisateur.getListeBlogAbonne().remove(blog);
		blog.getListeUtilisateurAbonne().remove(utilisateur);
		update(blog);
	}

}
